結果
問題 | No.1028 闇討ち |
ユーザー |
![]() |
提出日時 | 2020-04-17 22:18:13 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 170 ms / 2,000 ms |
コード長 | 1,822 bytes |
コンパイル時間 | 4,099 ms |
コンパイル使用メモリ | 216,888 KB |
最終ジャッジ日時 | 2025-01-09 20:13:31 |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 20 |
コンパイルメッセージ
main.cpp: In function ‘int main()’: main.cpp:66:14: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 66 | scanf("%d", &n); | ~~~~~^~~~~~~~~~ main.cpp:68:22: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 68 | scanf("%d", &a[i][j]); | ~~~~~^~~~~~~~~~~~~~~~
ソースコード
//Let's join Kaede Takagaki Fan Club !!=#include <bits/stdc++.h>#include <ext/pb_ds/assoc_container.hpp>#include <ext/pb_ds/tree_policy.hpp>using namespace std;typedef long long ll;typedef pair<int,int> P;typedef pair<int,P> P1;typedef pair<P,P> P2;#define pu push#define pb push_back#define mp make_pair#define eps 1e-7#define INF 1000000000#define fi first#define sc second#define rep(i,x) for(int i=0;i<x;i++)#define repn(i,x) for(int i=1;i<=x;i++)#define SORT(x) sort(x.begin(),x.end())#define ERASE(x) x.erase(unique(x.begin(),x.end()),x.end())#define POSL(x,v) (lower_bound(x.begin(),x.end(),v)-x.begin())#define POSU(x,v) (upper_bound(x.begin(),x.end(),v)-x.begin())#define all(x) x.begin(),x.end()template<class T>void dmp(T a){rep(i,a.size()) cout << a[i] << " ";cout << endl;}template<class T>bool chmax(T&a, T b){if(a < b){a = b;return 1;}return 0;}template<class T>bool chmin(T&a, T b){if(a > b){a = b;return 1;}return 0;}template<class T>void g(T &a){cin >> a;}template<class T>void o(const T &a,bool space=false){cout << a << (space?' ':'\n');}//ios::sync_with_stdio(false);const int mod = 1000000007;template<class T>void add(T&a,T b){a+=b;if(a >= mod) a-=mod;}int n, a[1005][1005];vector<P>pos[1005];int main(){scanf("%d", &n);repn(i, n) repn(j, n){scanf("%d", &a[i][j]);pos[a[i][j]].pb(mp(i, j));}ll ans = 0;repn(x,n){int dif = -n;int cur = 0;int mn = INF;int g[1005] = {};rep(j, pos[x].size()){cur += max(pos[x][j].fi-1, pos[x][j].sc-1);int c = pos[x][j].fi - (pos[x][j].sc-1);int d = pos[x][j].fi + (pos[x][j].sc-1);if(c < 1) dif++;else g[c]++;if(d <= n) g[d]++;}repn(i, n){chmin(mn, cur);dif += g[i];cur += dif;}ans += mn;}o(ans);}