题目链接:http://codeforces.com/contest/976/problem/D
看题解,学思路,智障儿童根本不会做。。。。
代码:
#include<bits/stdc++.h> #define xx first #define yy second #define pb push_back #define mp make_pair using namespace std; const int MAXN=305; typedef pair<int,int> pii; vector<pii> ans; void dfs(int now,vector<int> d) { if(d.empty()) return ; for(int i=0;i<d[0];i++) { for(int j=now+i+1;j<=now+d.back();j++) { ans.pb({now+i+1,j+1}); } } for(int i=1;i<d.size();i++) d[i]-=d[0]; int nxt=now+d[0]; d.erase(d.begin()); if(!d.empty()) d.pop_back(); dfs(nxt,d); } vector<int> d; int main() { //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); int n; scanf("%d",&n); d.resize(n); for(int i=0;i<n;i++) { scanf("%d",&d[i]); } dfs(0,d); printf("%d\n",ans.size()); for(auto i:ans) { printf("%d %d\n",i.xx,i.yy); } return 0; }