线性插值
#include<iostream> #include<set> using namespace std; struct Data { int index; int value; }; struct myComp { bool operator()(const Data &a, const Data &b) { return a.index < b.index; } }; int main() { set<Data, myComp> dataset; int m,n; cin>>m>>n; for(int i=0; i<m; i++) { int idx; int dt; cin>>idx; cin>>dt; if(dataset.empty()) { Data tmp; tmp.index = idx; tmp.value = dt; dataset.insert(tmp); } else { Data last = *(--dataset.end()); if(idx > last.index) { for(int i=1; i<=(idx-last.index); i++) { Data tmp; tmp.index = i+last.index; tmp.value = last.value + (dt-last.value)*i/(idx-last.index); dataset.insert(tmp); } } } } for(set<Data>::iterator itr=dataset.begin(); itr!=dataset.end(); itr++) { cout<<(*itr).index<<' '<<(*itr).value<<endl; } return 0; }