CodeForces - 988C(STL大法好)

請你找出兩個編號不一樣的數列,並從這兩個數列中各剛好刪除一個數,使得這兩個數列的和相等。c++

用vector存每個數spa

用map標記code

便可blog

#include <bits/stdc++.h>
using namespace std; const int maxn = 200005, INF = 0x7fffffff; typedef long long LL; vector<LL> G[maxn]; //存儲每一行的全部元素
map<LL, int> vis;   //標記去掉某一個元素的sum是否出現
map<LL, int> x;     //標記行
map<LL, int> y;     //標記列

int main() { int k, flag = 0; cin>> k; for(int i=0; i<k; i++) { int n, num; LL sum = 0; cin>> n; for(int j=0; j<n; j++) { cin>> num; sum += num; G[i].push_back(num); } if(!flag) for(int j=0; j<n; j++) { LL temp = sum - G[i][j]; if(vis[temp]) if(x[temp] == i+1) continue; else { cout<< "YES" <<endl; cout<< x[temp] << " " << y[temp] <<endl; cout<< i+1 << " " << j+1 <<endl; flag = 1; break; } else { vis[temp] = 1; x[temp] = i+1; y[temp] = j+1; } } } if(!flag) cout<< "NO" <<endl; return 0; }
相關文章
相關標籤/搜索