Submission #99662

# Submission time Handle Problem Language Result Execution time Memory
99662 2019-03-06T04:50:26 Z kjp4155 Bitaro the Brave (JOI19_ho_t1) C++17
100 / 100
396 ms 152668 KB
#include <bits/stdc++.h>

using namespace std;

#define VA_NUM_ARGS(...) VA_NUM_ARGS_IMPL_((0,__VA_ARGS__, 6,5,4,3,2,1))
#define VA_NUM_ARGS_IMPL_(tuple) VA_NUM_ARGS_IMPL tuple
#define VA_NUM_ARGS_IMPL(_0,_1,_2,_3,_4,_5,_6,N,...) N
#define macro_dispatcher(macro, ...) macro_dispatcher_(macro, VA_NUM_ARGS(__VA_ARGS__))
#define macro_dispatcher_(macro, nargs) macro_dispatcher__(macro, nargs)
#define macro_dispatcher__(macro, nargs) macro_dispatcher___(macro, nargs)
#define macro_dispatcher___(macro, nargs) macro ## nargs
#define Debug1(a)           cout<<#a<<"="<<(a)<<"\n"
#define Debug2(a,b)         cout<<#a<<"="<<(a)<<", "<<#b<<"="<<(b)<<"\n"
#define Debug3(a,b,c)       cout<<#a<<"="<<(a)<<", "<<#b<<"="<<(b)<<", "<<#c<<"="<<(c)<<"\n"
#define Debug4(a,b,c,d)     cout<<#a<<"="<<(a)<<", "<<#b<<"="<<(b)<<", "<<#c<<"="<<(c)<<", "<<#d<<"="<<(d)<<"\n"
#define Debug5(a,b,c,d,e)   cout<<#a<<"="<<(a)<<", "<<#b<<"="<<(b)<<", "<<#c<<"="<<(c)<<", "<<#d<<"="<<(d)<<", "<<#e<<"="<<(e)<<"\n"
#define Debug6(a,b,c,d,e,f) cout<<#a<<"="<<(a)<<", "<<#b<<"="<<(b)<<", "<<#c<<"="<<(c)<<", "<<#d<<"="<<(d)<<", "<<#e<<"="<<(e)<<", "<<#f<<"="<<(f)<<"\n"
#define Debug(...) macro_dispatcher(Debug, __VA_ARGS__)(__VA_ARGS__)
#define DA(a,s,n) cout<<#a<<"=["; printarray(a,s,n); cout<<"]\n"

#define TT1 template<class T>
#define TT1T2 template<class T1, class T2>
#define TT1T2T3 template<class T1, class T2, class T3>
template<class T, size_t N> ostream& operator << (ostream& os, const array<T, N>& v);
TT1T2 ostream& operator << (ostream& os, const pair<T1, T2>& p){ return os <<"("<<p.first<<", "<< p.second<<")"; }
TT1 ostream& operator << (ostream& os, const vector<T>& v){       bool f=1;os<<"[";for(auto& i : v) { if (!f)os << ", ";os<<i;f=0;}return os << "]"; }
template<class T, size_t N> ostream& operator << (ostream& os, const array<T, N>& v) {     bool f=1;os<<"[";for(auto& i : v) { if (!f)os << ", ";os<<i;f=0;}return os << "]"; }
TT1T2 ostream& operator << (ostream& os, const set<T1, T2>&v){    bool f=1;os<<"[";for(auto& i : v) { if (!f)os << ", ";os<<i;f=0;}return os << "]"; }
TT1T2 ostream& operator << (ostream& os, const multiset<T1,T2>&v){bool f=1;os<<"[";for(auto& i : v) { if (!f)os << ", ";os<<i;f=0;}return os << "]"; }
TT1T2T3 ostream& operator << (ostream& os, const map<T1,T2,T3>& v){ bool f = 1; os << "["; for (auto& ii : v) { if (!f)os << ", "; os << "(" << ii.first << " -> " << ii.second << ") "; f = 0; }return os << "]"; }
TT1T2 ostream& operator << (ostream& os, const multimap<T1, T2>& v){ bool f = 1; os << "["; for (auto& ii : v) { if (!f)os << ", "; os << "(" << ii.first << " -> " << ii.second << ") "; f = 0; }return os << "]"; }
TT1T2 ostream& operator << (ostream& os, priority_queue<T1, T2> v) { bool f = 1; os << "["; while (!v.empty()) { auto x = v.top(); v.pop(); if (!f) os << ", "; f = 0; os << x; } return os << "]"; }
TT1T2 void printarray(const T1& a, T2 l, T2 r){ for (T2 i = l; i<=r; i++) cout << a[i] << (i<r?" ":""); }

void cio(){
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    //cout << setprecision(15);
}

#define tt() printf("%.4f sec\n", (double) clock() / CLOCKS_PER_SEC )

typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;

#define Fi first
#define Se second
#define pb(x) push_back(x)
#define sz(x) (int)x.size()
#define rep(i, n) for(int i=0;i<n;i++)
#define repp(i, n) for(int i=1;i<=n;i++)
#define all(x) x.begin(), x.end()
#define geti1(X) cin >> X
#define geti2(X,Y) cin >> X >> Y
#define geti3(X,Y,Z) cin >> X >> Y >> Z
#define geti4(X,Y,Z,W) cin >> X >> Y >> Z >> W
#define GET_MACRO(_1,_2,_3,_4,NAME,...) NAME
#define geti(...) GET_MACRO(__VA_ARGS__, geti4, geti3, geti2, geti1) (__VA_ARGS__)

#define endl '\n'

typedef tuple<int,int,int> t3;
typedef tuple<int,int,int,int> t4;
void die(){printf("-1\n"); exit(0);}
int xx[8] = {1,-1,0,0,1,1,-1,-1}, yy[8] = {0,0,1,-1,1,-1,1,-1};
const ll mod = 1e9+7;

int N,M;
char s[3050][3050];
ll S1[3050][3050], S2[3050][3050];

int main(){
    scanf("%d%d",&N,&M);
    repp(i,N) scanf("%s",s[i]+1);

    for(int i=1;i<=N;i++){
        ll cnt = 0;
        for(int j=M;j>=1;j--){
            if( s[i][j] == 'J' ) S1[i][j] = cnt;
            if( s[i][j] == 'O' ) cnt++;
        }
    }
    for(int j=1;j<=M;j++){
        ll cnt = 0;
        for(int i=N;i>=1;i--){
            if( s[i][j] == 'J' ) S2[i][j] = cnt;
            if( s[i][j] == 'I' ) cnt++;
        }
    }

    ll ans = 0;
    repp(i,N) repp(j,M) ans += S1[i][j] * S2[i][j];
    printf("%lld\n",ans);
}

Compilation message

joi2019_ho_t1.cpp: In function 'int main()':
joi2019_ho_t1.cpp:75:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d",&N,&M);
     ~~~~~^~~~~~~~~~~~~~
joi2019_ho_t1.cpp:76:20: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     repp(i,N) scanf("%s",s[i]+1);
               ~~~~~^~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 2 ms 384 KB Output is correct
3 Correct 2 ms 384 KB Output is correct
4 Correct 3 ms 512 KB Output is correct
5 Correct 3 ms 1664 KB Output is correct
6 Correct 3 ms 1408 KB Output is correct
7 Correct 4 ms 1408 KB Output is correct
8 Correct 4 ms 1664 KB Output is correct
9 Correct 4 ms 1556 KB Output is correct
10 Correct 4 ms 1408 KB Output is correct
11 Correct 4 ms 1536 KB Output is correct
12 Correct 4 ms 1536 KB Output is correct
13 Correct 3 ms 1408 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 2 ms 384 KB Output is correct
3 Correct 2 ms 384 KB Output is correct
4 Correct 3 ms 512 KB Output is correct
5 Correct 3 ms 1664 KB Output is correct
6 Correct 3 ms 1408 KB Output is correct
7 Correct 4 ms 1408 KB Output is correct
8 Correct 4 ms 1664 KB Output is correct
9 Correct 4 ms 1556 KB Output is correct
10 Correct 4 ms 1408 KB Output is correct
11 Correct 4 ms 1536 KB Output is correct
12 Correct 4 ms 1536 KB Output is correct
13 Correct 3 ms 1408 KB Output is correct
14 Correct 14 ms 8832 KB Output is correct
15 Correct 8 ms 4864 KB Output is correct
16 Correct 7 ms 4352 KB Output is correct
17 Correct 2 ms 640 KB Output is correct
18 Correct 16 ms 9728 KB Output is correct
19 Correct 11 ms 7808 KB Output is correct
20 Correct 12 ms 7040 KB Output is correct
21 Correct 16 ms 9792 KB Output is correct
22 Correct 10 ms 8320 KB Output is correct
23 Correct 11 ms 7040 KB Output is correct
24 Correct 15 ms 9728 KB Output is correct
25 Correct 11 ms 7936 KB Output is correct
26 Correct 12 ms 7040 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 2 ms 384 KB Output is correct
3 Correct 2 ms 384 KB Output is correct
4 Correct 3 ms 512 KB Output is correct
5 Correct 3 ms 1664 KB Output is correct
6 Correct 3 ms 1408 KB Output is correct
7 Correct 4 ms 1408 KB Output is correct
8 Correct 4 ms 1664 KB Output is correct
9 Correct 4 ms 1556 KB Output is correct
10 Correct 4 ms 1408 KB Output is correct
11 Correct 4 ms 1536 KB Output is correct
12 Correct 4 ms 1536 KB Output is correct
13 Correct 3 ms 1408 KB Output is correct
14 Correct 14 ms 8832 KB Output is correct
15 Correct 8 ms 4864 KB Output is correct
16 Correct 7 ms 4352 KB Output is correct
17 Correct 2 ms 640 KB Output is correct
18 Correct 16 ms 9728 KB Output is correct
19 Correct 11 ms 7808 KB Output is correct
20 Correct 12 ms 7040 KB Output is correct
21 Correct 16 ms 9792 KB Output is correct
22 Correct 10 ms 8320 KB Output is correct
23 Correct 11 ms 7040 KB Output is correct
24 Correct 15 ms 9728 KB Output is correct
25 Correct 11 ms 7936 KB Output is correct
26 Correct 12 ms 7040 KB Output is correct
27 Correct 351 ms 152668 KB Output is correct
28 Correct 22 ms 25088 KB Output is correct
29 Correct 13 ms 7168 KB Output is correct
30 Correct 3 ms 896 KB Output is correct
31 Correct 257 ms 125636 KB Output is correct
32 Correct 211 ms 106360 KB Output is correct
33 Correct 265 ms 80248 KB Output is correct
34 Correct 300 ms 145656 KB Output is correct
35 Correct 330 ms 118348 KB Output is correct
36 Correct 276 ms 80248 KB Output is correct
37 Correct 396 ms 152568 KB Output is correct
38 Correct 184 ms 80860 KB Output is correct
39 Correct 163 ms 60252 KB Output is correct